import java.time.Period;
import java.util.ArrayList;

public class No038 {
    /**
     * 输入一个字符串,按字典序打印出该字符串中字符的所有排列。
     * 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba
     */
    public static ArrayList<String> Permutation(String str) {
        ArrayList<String> result = new ArrayList<>();
        if (str.length() == 0) return result;
        PermutationCore(str, "", result);
        return result;
    }

    public static void PermutationCore(String str, String cur, ArrayList<String> result) {
        if (str.length() == 0) {
            if (!result.contains(cur)) {
                result.add(cur);
            }
        }

        for (int i = 0; i < str.length(); i++) {
            PermutationCore(str.substring(0, i) + str.substring(i + 1), cur + str.charAt(i), result);
        }
    }

    public static void main(String[] args) {
        System.out.println(Permutation("abcd"));
    }

}
